<?php
/**
 * Created by PhpStorm.
 * User: 郑江
 * Date: 2018/10/30
 * Time: 11:48
 */

namespace App\Http\Controllers\Service;
use App\Http\Controllers\Controller;
use App\Tool\ValidateCode\ValidateCode;
use App\Tool\SMS\SendTemplateSMS;
use App\Entity\TempPhone;
use Illuminate\Http\Request;
use App\Models\M3Result;

class ValidateController extends Controller
{
    public function create($value=""){
        $validateCode=new ValidateCode();
        return $validateCode->doimg();
    }

    /**
     * 发送手机验证信息信息
     */
    public function sendSMS(Request $request){
        //实例化状态信息返回类
        $m3_result=new M3Result();
        //获取传过来的手机号码，没有就默认为空
        $phone=$request->input('phone','');
        if($phone==''){
            //手机号码为空，要返回错误信息
            $m3_result->status=1;
            $m3_result->message="手机号不能为空";
            return $m3_result->toJson();
        }
        $sendTemplateSMS=new SendTemplateSMS();
        //产生随机码
        //设置数据源，一般来说，手机验证码最好是六位纯数字验证码
        $charset="1234567890";
        $code="";
        $_len = strlen($charset)-1;
        for ($i=0;$i<6;$i++) {
            $code.= $charset[mt_rand(0,$_len)];
        }
        //第一个参数为发送对象（手机号），第二个参数为数组['验证码','验证码有效时间（分钟）']，第三个参数短信发送模式
        $m3_result=$sendTemplateSMS->sendTemplateSMS($phone,array($code,60),1);
        //当短信发送成功时（状态码为0即为发送成功）
        if($m3_result->status==0){
            //将用户的手机号数据和相对应的验证码保存到数据库里面
            $tempPhone=new TempPhone();
            $tempPhone->phone=$phone;
            $tempPhone->code=$code;
            //把验证码的有效时间给储存到数据库中
            //要注意，数据库里面的TIMESTAMP 要求字符串格式，所以要用 date()函数把具体时间戳（以秒为单位）
            //转换成响应格式的字符串。
            $tempPhone->deadline=date('Y-m-d H-i-s',time()+60*60);
            //将参数保存到数据库里面
            $tempPhone->save();
        }
        //返回数据
        return $m3_result->toJson();



    }
}
